package br.museu.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Table;

import org.hibernate.annotations.Type;
import org.joda.time.LocalDate;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import br.museu.model.enums.TipoUsuario;

@SuppressWarnings("serial")
@Entity
@Table(name = "tb_usuario")
@Component
@Scope("session")
public class Usuario extends ObjetoBasico implements Serializable {

	@Column(name = "login", length = 50, unique = true)
	private String login;

	@Column(name = "senha", length = 16)
	private String senha;

	@Column(insertable = false)
	private String senhaConfirm;

	@Column(name = "dt_criacao")
	@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDate")
	private LocalDate dtCriacao;

	@Column(name = "dt_ultimo_acesso")
	@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDate")
	private LocalDate dtUltimoAcesso;

	@Column(name = "nome_completo", length = 20)
	private String nomeCompleto;

	@Column(name = "dt_nascimento")
	@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDate")
	private LocalDate dataNascimento;

	@Column(name = "cpf", length = 11, unique = true)
	private String cpf;

	@Enumerated(EnumType.STRING)
	private TipoUsuario tipo;

	public Usuario() {
	}

	public Usuario(String login, String senha, LocalDate dtCriacao, LocalDate dtUltimoAcesso, String nomeCompleto, LocalDate dataNascimento, String cpf) {
		this.login = login;
		this.senha = senha;
		this.dtCriacao = dtCriacao;
		this.dtUltimoAcesso = dtUltimoAcesso;
		this.nomeCompleto = nomeCompleto;
		this.dataNascimento = dataNascimento;
		this.cpf = cpf;
	}

	@Override
	public boolean equals(Object obj) {
		Usuario usr = (Usuario) obj;

		if (usr.getCpf().equals(this.getCpf())) {
			return true;
		} else {
			return false;
		}

	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public LocalDate getDtCriacao() {
		return dtCriacao;
	}

	public void setDtCriacao(LocalDate dtCriacao) {
		this.dtCriacao = dtCriacao;
	}

	public LocalDate getDtUltimoAcesso() {
		return dtUltimoAcesso;
	}

	public void setDtUltimoAcesso(LocalDate dtUltimoAcesso) {
		this.dtUltimoAcesso = dtUltimoAcesso;
	}

	public String getNomeCompleto() {
		return this.nomeCompleto;
	}

	public void setPrimeiroNome(String nomeCompleto) {
		this.nomeCompleto = nomeCompleto;
	}

	public LocalDate getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(String dataNascimento) {
		this.dataNascimento = new LocalDate(dataNascimento);
	}

	public TipoUsuario getTipo() {
		return tipo;
	}

	public void setTipo(TipoUsuario tipo) {
		this.tipo = tipo;
	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public String getSenhaConfirm() {
		return senhaConfirm;
	}

	public void setSenhaConfirm(String senhaConfirm) {
		this.senhaConfirm = senhaConfirm;
	}

	public void setNomeCompleto(String nomeCompleto) {
		this.nomeCompleto = nomeCompleto;
	}

}
